//
//  HMUserAccountViewModel.swift
//  WeiBo
//
//  Created by Apple on 16/9/20.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit

class HMUserAccountViewModel: NSObject {

    //  单例的全局访问点
    static let sharedUserAccountViewModel: HMUserAccountViewModel = HMUserAccountViewModel()
    //  构造函数私有化
    private override init() {
        super.init()
    }
    
    //  用户模型
    var userAccount: HMUserAccount? {
        //  从沙盒里面获取数据
        return HMUserAccount.loadUserAccount()
    }
    
    //  判断accesstoken是否过期
    var accessToken: String? {
        
        if let token = userAccount?.access_token {
            //  accessToken不为nil，判断是否过期,如果过期时间大于当前时间表示没有过期
            if userAccount?.expiresDate?.compare(Date()) == .orderedDescending {
                return token
            } else {
                return nil
            }
            
            
        }
        return nil
        
    }
    
    //  是否登录的逻辑
    var isLogin: Bool {
        
        return accessToken != nil
    }
    
    
    
    //  获取accesstoken
    func requestAccessToken(code: String, callBack: @escaping (Bool)->()) {
        
        HMNetworkTools.sharedTools.requestAccessToken(code: code) { (response, error) in
            if error != nil {
                print("网络请求异常: \(error!)")
                callBack(false)
                return
            }
            
            //  网络请求成功
            guard let dic = response as? [String: Any] else {
                print("不是一个正确的字典")
                callBack(false)
                return
            }
            
            //  完成字典转模型
            let userAccount = HMUserAccount(dic: dic)
            print(userAccount)
            
            //  获取用户信息
            self.requestUserInfo(userAccount: userAccount, callBack: callBack)
            
            
            
        }
        
        
    }
    //  获取用户信息接口
    fileprivate func requestUserInfo(userAccount: HMUserAccount, callBack: @escaping (Bool)->()) {
        //  获取用户信息
        HMNetworkTools.sharedTools.requestUserInfo(userAccount: userAccount) { (response, error) in
            if error != nil {
                print("网络请求异常: \(error!)")
                callBack(false)
                return
            }
            
            guard let dic = response as? [String: Any] else {
                print("不是一个正确的字典格式")
                callBack(false)
                return
            }
            //  获取用户信息
            let name = dic["name"]
            let avatar_large = dic["avatar_large"]
            
            //  给用户对象保存属性值
            userAccount.name = name as? String
            userAccount.avatar_large = avatar_large as? String
            
            print(userAccount)
            //  保存用户信息
            userAccount.saveUserAccount()
            //  请求完成
            callBack(true)
        }
    }

    
}
